@extends('layouts.admin')

@section('title')
    预设组 &rarr; 预设: {{ $egg->name }}
@endsection

@section('content-header')
    <h1>{{ $egg->name }}<small>{{ str_limit($egg->description, 50) }}</small></h1>
    <ol class="breadcrumb">
        <li><a href="{{ route('admin.index') }}">管理</a></li>
        <li><a href="{{ route('admin.nests') }}">预设组</a></li>
        <li><a href="{{ route('admin.nests.view', $egg->nest->id) }}">{{ $egg->nest->name }}</a></li>
        <li class="active">{{ $egg->name }}</li>
    </ol>
@endsection

@section('content')
    <div class="row">
        <div class="col-xs-12">
            <div class="nav-tabs-custom nav-tabs-floating">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="{{ route('admin.nests.egg.view', $egg->id) }}">配置</a></li>
                    <li><a href="{{ route('admin.nests.egg.variables', $egg->id) }}">变量</a></li>
                    <li><a href="{{ route('admin.nests.egg.scripts', $egg->id) }}">安装脚本</a></li>
                </ul>
            </div>
        </div>
    </div>
    <form action="{{ route('admin.nests.egg.view', $egg->id) }}" enctype="multipart/form-data" method="POST">
        <div class="row">
            <div class="col-xs-12">
                <div class="box box-danger">
                    <div class="box-body">
                        <div class="row">
                            <div class="col-xs-8">
                                <div class="form-group no-margin-bottom">
                                    <label for="pName" class="control-label">预设文件</label>
                                    <div>
                                        <input type="file" name="import_file" class="form-control"
                                            style="border: 0;margin-left:-10px;" />
                                        <p class="text-muted small no-margin-bottom">
                                            如需通过上传新的JSON文件替换此预设的设置，请在此选择文件并点击"更新预设"。这不会更改现有服务器的启动命令或Docker镜像。</p>
                                    </div>
                                </div>
                            </div>
                            <div class="col-xs-4">
                                {!! csrf_field() !!}
                                <button type="submit" name="_method" value="PUT"
                                    class="btn btn-sm btn-danger pull-right">更新预设</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </form>
    <form action="{{ route('admin.nests.egg.view', $egg->id) }}" method="POST">
        <div class="row">
            <div class="col-xs-12">
                <div class="box">
                    <div class="box-header with-border">
                        <h3 class="box-title">基本配置</h3>
                    </div>
                    <div class="box-body">
                        <div class="row">
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pName" class="control-label">名称 <span class="field-required"></span></label>
                                    <input type="text" id="pName" name="name" value="{{ $egg->name }}"
                                        class="form-control" />
                                    <p class="text-muted small">用于标识此预设的简单易懂的名称。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pUuid" class="control-label">UUID</label>
                                    <input type="text" id="pUuid" readonly value="{{ $egg->uuid }}" class="form-control" />
                                    <p class="text-muted small">守护程序用作标识符的全局唯一标识符。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pAuthor" class="control-label">作者</label>
                                    <input type="text" id="pAuthor" readonly value="{{ $egg->author }}"
                                        class="form-control" />
                                    <p class="text-muted small">此版本预设的作者。上传来自不同作者的新预设配置将更改此值。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pDockerImage" class="control-label">Docker镜像 <span
                                            class="field-required"></span></label>
                                    <textarea id="pDockerImages" name="docker_images" class="form-control"
                                        rows="4">{{ implode(PHP_EOL, $images) }}</textarea>
                                    <p class="text-muted small">
                                        使用此预设的服务器可用的Docker镜像。每行输入一个。如果提供多个值，用户将能够从此列表中选择。
                                        可选地，可以通过在镜像URL前加上名称和竖线字符来提供显示名称。例如: <code>显示名称|ghcr.io/my/egg</code>
                                    </p>
                                </div>
                                <div class="form-group">
                                    <div class="checkbox checkbox-primary no-margin-bottom">
                                        <input id="pForceOutgoingIp" name="force_outgoing_ip" type="checkbox" value="1"
                                            @if($egg->force_outgoing_ip) checked @endif />
                                        <label for="pForceOutgoingIp" class="strong">强制出口IP</label>
                                        <p class="text-muted small">
                                            强制所有出站网络流量将其源IP NAT转换为服务器主要分配IP。
                                            当节点有多个公共IP地址时，某些游戏需要此设置才能正常工作。
                                            <br>
                                            <strong>
                                                启用此选项将禁用使用此预设的服务器的内部网络，
                                                导致它们无法在节点内部访问同一节点上的其他服务器。
                                            </strong>
                                        </p>
                                    </div>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pDescription" class="control-label">描述</label>
                                    <textarea id="pDescription" name="description" class="form-control"
                                        rows="8">{{ $egg->description }}</textarea>
                                    <p class="text-muted small">此预设的描述，将在面板中根据需要显示。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pStartup" class="control-label">启动命令 <span
                                            class="field-required"></span></label>
                                    <textarea id="pStartup" name="startup" class="form-control"
                                        rows="8">{{ $egg->startup }}</textarea>
                                    <p class="text-muted small">使用此预设创建新服务器时的默认启动命令。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigFeatures" class="control-label">功能特性</label>
                                    <div>
                                        <select class="form-control" name="features[]" id="pConfigFeatures" multiple>
                                            @foreach(($egg->features ?? []) as $feature)
                                                <option value="{{ $feature }}" selected>{{ $feature }}</option>
                                            @endforeach
                                        </select>
                                        <p class="text-muted small">属于此预设的附加功能。可用于配置额外的面板修改。</p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="col-xs-12">
                <div class="box">
                    <div class="box-header with-border">
                        <h3 class="box-title">进程管理</h3>
                    </div>
                    <div class="box-body">
                        <div class="row">
                            <div class="col-xs-12">
                                <div class="alert alert-warning">
                                    <p>除非您了解此系统的工作原理，否则不应编辑以下配置选项。如果错误修改可能导致守护程序崩溃。</p>
                                    <p>除非您从"复制设置自"下拉列表中选择其他选项，否则所有字段都是必填的，在这种情况下，可以留空字段以使用该预设的值。</p>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pConfigFrom" class="form-label">复制设置自</label>
                                    <select name="config_from" id="pConfigFrom" class="form-control">
                                        <option value="">无</option>
                                        @foreach($egg->nest->eggs as $o)
                                            <option value="{{ $o->id }}" {{ ($egg->config_from !== $o->id) ?: 'selected' }}>
                                                {{ $o->name }} &lt;{{ $o->author }}&gt;</option>
                                        @endforeach
                                    </select>
                                    <p class="text-muted small">如需默认使用其他预设的设置，请从上方菜单中选择。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigStop" class="form-label">停止命令</label>
                                    <input type="text" id="pConfigStop" name="config_stop" class="form-control"
                                        value="{{ $egg->config_stop }}" />
                                    <p class="text-muted small">
                                        应该发送给服务器进程以优雅地停止它们的命令。如果需要发送<code>SIGINT</code>，则应在此处输入<code>^C</code>。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigLogs" class="form-label">日志配置</label>
                                    <textarea data-action="handle-tabs" id="pConfigLogs" name="config_logs"
                                        class="form-control"
                                        rows="6">{{ !is_null($egg->config_logs) ? json_encode(json_decode($egg->config_logs), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : '' }}</textarea>
                                    <p class="text-muted small">这应该是日志文件存储位置的JSON表示，以及守护程序是否应创建自定义日志。</p>
                                </div>
                            </div>
                            <div class="col-sm-6">
                                <div class="form-group">
                                    <label for="pConfigFiles" class="form-label">配置文件</label>
                                    <textarea data-action="handle-tabs" id="pConfigFiles" name="config_files"
                                        class="form-control"
                                        rows="6">{{ !is_null($egg->config_files) ? json_encode(json_decode($egg->config_files), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : '' }}</textarea>
                                    <p class="text-muted small">这应该是要修改的配置文件及其应更改的部分的JSON表示。</p>
                                </div>
                                <div class="form-group">
                                    <label for="pConfigStartup" class="form-label">启动配置</label>
                                    <textarea data-action="handle-tabs" id="pConfigStartup" name="config_startup"
                                        class="form-control"
                                        rows="6">{{ !is_null($egg->config_startup) ? json_encode(json_decode($egg->config_startup), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : '' }}</textarea>
                                    <p class="text-muted small">这应该是守护程序在启动服务器以确定完成时应查找的值的JSON表示。</p>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="box-footer">
                        {!! csrf_field() !!}
                        <button type="submit" name="_method" value="PATCH"
                            class="btn btn-primary btn-sm pull-right">保存</button>
                        <a href="{{ route('admin.nests.egg.export', $egg->id) }}" class="btn btn-sm btn-info pull-right"
                            style="margin-right:10px;">导出</a>
                        <button id="deleteButton" type="submit" name="_method" value="DELETE"
                            class="btn btn-danger btn-sm muted muted-hover">
                            <i class="fa fa-trash-o"></i>
                        </button>
                    </div>
                </div>
            </div>
        </div>
    </form>
@endsection

@section('footer-scripts')
    @parent
    <script>
        $('#pConfigFrom').select2();
        $('#deleteButton').on('mouseenter', function (event) {
            $(this).find('i').html(' 删除预设');
        }).on('mouseleave', function (event) {
            $(this).find('i').html('');
        });
        $('textarea[data-action="handle-tabs"]').on('keydown', function (event) {
            if (event.keyCode === 9) {
                event.preventDefault();

                var curPos = $(this)[0].selectionStart;
                var prepend = $(this).val().substr(0, curPos);
                var append = $(this).val().substr(curPos);

                $(this).val(prepend + '    ' + append);
            }
        });
        $('#pConfigFeatures').select2({
            tags: true,
            selectOnClose: false,
            tokenSeparators: [',', ' '],
        });
    </script>
@endsection